/**
 * 一般的GET请求
 * @GET请求,请求头带有参数
 * @param{String} url 接口地址
 * @param{Function} funSuccess 成功的回调函数
 * @param{Function} funComplete 请求结束的回调函数
 */
function get(url, funSuccess, funComplete = () => {}) {
	uni.request({
		url,
		method: 'GET',
		sslVerify: false,
		header: {
			"content-type": "application/json;charset=UTF-8"
		},
		success: res => {
			funSuccess(res);
		},
		fail: err => {
			console.log(err);
		},
		complete: () => {
			funComplete()
		}

	});
}
/**
 * @GET请求,请求头带有参数
 * @param{String} url 接口地址
 * @param{JSON} header 自定义请求头，包含函数
 * @param{Function} funSuccess 成功的回调函数
 * @param{Function} funComplete 请求结束的回调函数
 */
function getWithHeader(url, header, funSuccess, funComplete = () => {

}) {
	uni.request({
		url,
		method: 'GET',
		sslVerify: false,
		header,
		success: res => {
			funSuccess(res);
		},
		fail: err => {
			console.log(err);
		},
		complete: () => {
			funComplete()
		}

	});
}
/** 
 * @POST请求,请求头带有参数
 * @param{String} url 接口地址
 * @param{JSON}} data 要提交的参数
 * @param{JSON} header 自定义请求头，包含函数
 * @param{Function} funSuccess 成功的回调函数
 * @param{Function} funComplete 请求结束的回调函数
 */

function postQuery(url,data,funSuccess,funComplete=()=> {}){
	uni.request({
		url,
		method:"POST",
		data,
		header:{
			"content-type":"application/x-www-form-urlencoded;charset=UTF-8"
		},
		success:res=>{
			funSuccess(res)
		},
		fail:err=>{
			console.log(err)
		},
		complete:()=>{
			funComplete()
		}
	})

}

/** 
 * @POST请求,请求头带有参数
 * @param{String} url 接口地址
 * @param{JSON}} data 要提交的参数
 * @param{JSON} header 自定义请求头，包含函数
 * @param{Function} funSuccess 成功的回调函数
 * @param{Function} funComplete 请求结束的回调函数
 */
function post(url,data,funSuccess,funComplete=()=>{}){
	uni.request({
		url,
		method:"POST",
		data,
		header:{
			"content-type":"application/json"
		},
		success:res=>{
			funSuccess(res)
		},
		fail:err=>{
			console.log(err)
		},
		complete:()=>{
			funComplete()
		}
	})
}
/** 
 * @POST请求,请求头带有参数
 * @param{String} url 接口地址
 * @param{String} name 文件上传接口的参数名，服务端一般为“file”
 * @param{JSON}} data 要提交的参数，如用户密码等
 * @param{JSON}} filePath 本地文件路径
 * @param{Function} funSuccess 成功的回调函数
 * @param{Function} funComplete 请求结束的回调函数
 */
function postFile(url,name,filePath,data,funSuccess,funComplete=()=>{}){
	uni.uploadFile({
		url,
		filePath,
		name,
		formData:data,
		success:res=>{
			funSuccess(res)
		},
		fail:err=>{
			console.log(err)
		},
		complete:()=>{
			funComplete()
		}
	})
}
/**
 * Promiss写法，嵌套请求时，async块内代码是同步的，会等待await代码行的执行结果
 * 另外注意lambda表达式的使用，async关键字应在匿名函数参数前（需要加括号）
 * @param{String} url 接口地址
 * @param{String} mathod 请求方式，默认Get，其他方法按需填写
 * @param{JSON}} data 要提交的参数
 * @param{Function} funSuccess 成功的回调函数
 * @param{Function} funComplete 请求结束的回调函数
 */
function requestAsync(url,data={},method='Get'){
	return new Promise((resolve,reject)=>{
		uni.request({
			url,
			method,
			data,
			success: res => {
				resolve(res.data)
			},
			fail: err => {
				reject(err)
			}
			
		});
	})
}
function del(url,data,funSuccess){
	uni.request({
		url,
		method: 'DELETE',
		data,
		header:{
			"content-type":"application/x-www-form-urlencoded;chanrset=UTF-8"
		},
		success: res => {
			funSuccess(res.data)
		},
		fail: () => {
			console.log(err);
		},
		// complete: res => {
		// 	funComplete()
		// }
	});
}

module.exports = {
	get,
	getWithHeader,
	postQuery,
	post,
	postFile,
	requestAsync,
	del,
	
	
}